#include <iostream>
#include "stock10.hpp"
Stock::Stock()
{
    std::cout<<"Default constructor called\n";
    company = "no name";
    shares = 0;
    share_val = 0.0;
    total_val = 0.0;
}
Stock::Stock(const std::string &co,long n,double pr)
{
    std::cout<<"Constructor using "<<co<<" called\n";
    company = co;
    if(n<0)
    {
        std::cout<<"Number of shares can't be negative; "
                 <<company<<" shares set to 0.\n";
    }
    else
        shares = n;
    share_val = pr;
    set_tot();
}
Stock::~Stock()
{
    std::cout<<"Bye, "<<company<<"!\n";
}
void Stock::buy(long num,double price)
{
    if(num<0)
    {
        std::cout<<"Number of shares purchased can't be negative. "
            <<"Transaction is abborted.\n";
    }
    else{
        shares += num;
        share_val = price;
        set_tot();
    }
}
void Stock::sell(long num,double price)
{
    using std::cout;
    if(num<0)
    {
        cout<<"Number of shares sold can't be negative. "
            <<"Transcation is aborted.\n";
    }
    else if(num>shares)
    {
        cout<<"You can't sell more than your have! "
            <<"Transaction is aborted.\n";
    }
    else{
        shares -= num;
        share_val = price;
        set_tot();
    }
}
void Stock::update(double price)
{
    share_val = price;
    set_tot();
}
void Stock::show()
{
    using std::cout;
    using std::ios_base;
    ios_base::fmtflags orig = cout.setf(ios_base::fixed,ios_base::floatfield);
    std::streamsize prec = cout.precision(3);
    cout<<"Company: "<<company<<" Shares: "<<shares<<'\n';
    cout<<" Shares: $"<<share_val;
    cout<<" Total worth: $"<<total_val<<'\n';
    cout.setf(orig,ios_base::floatfield);
    cout.precision(prec);
}
